//
//  MSP430G2_WDT.h
//
//  Created on: 2019年7月16日
//  Author: lucfa
//


#include <stdint.h>

#include <MSP430G2553.h>

#ifndef _MSP430G2_GPIO_H
#define _MSP430G2_GPIO_H





#define GpioPin0                 0x00  // Pin 0 selected
#define GpioPin1                 0x01  // Pin 1 selected
#define GpioPin2                 0x02  // Pin 2 selected
#define GpioPin3                 0x03  // Pin 3 selected
#define GpioPin4                 0x04  // Pin 4 selected
#define GpioPin5                 0x05  // Pin 5 selected
#define GpioPin6                 0x06  // Pin 6 selected
#define GpioPin7                 0x07  // Pin 7 selected


#define GpioPort1                0x01
#define GpioPort2                0x02
#define GpioPort3                0x03
#define GpioPort4                0x04



#ifdef __cplusplus
extern "C" {
#endif






// 定义端口
typedef enum
{
    Bit_RESET = 0,
    Bit_SET

} BitAction;


typedef enum
{
    GpioMode_OUT = 0x01,    // 输出模式
    GpioMode_IPD = 0x02,    // 下拉输入
    GpioMode_IPU = 0x04,    // 上拉输入
    GpioMode_EXF = 0x08,    // 主外设模块功能
    GpioMode_ENC = 0x10,    // 保留
    GpioMode_EXS = 0x20,    // 第二外设模块功能

} GPIOMode_Def;



// 配置端口
typedef struct
{
    uint8_t GpioPort;        // 端口
    uint8_t GpioPin;         // 引脚
    GPIOMode_Def GpioMode;   // 方向
    BitAction ActiveLogic;   // 有效电平
    BitAction OutputLogic;   // 默认电平

} GpioConfig_Def;



void Gpio_DeInit(void);

void Gpio_Init(GpioConfig_Def *GpioCfg);

void Gpio_WritePin(uint8_t GpioPort, uint8_t GpioPin, BitAction BitVal);
void Gpio_WritePort(uint8_t GpioPort);

uint8_t Gpio_ReadPin(uint8_t GpioPort, uint8_t GpioPin, BitAction BitVal);
uint8_t Gpio_ReadPort(uint8_t GpioPort);

void Gpio_SetBit(uint8_t GpioPort, uint8_t GpioPin);
void Gpio_ResetBit(uint8_t GpioPort, uint8_t GpioPin);

void Gpio_TogglePin(uint8_t GpioPort, uint8_t GpioPin);



#ifdef __cplusplus
}
#endif


#endif // _MSP430G2_GPIO_H


